#ifndef __M_WORKER_H__
#define __M_WORKER_H__
// 引入muduo库的EventLoopThread，用于创建一个带有事件循环的线程
#include "muduo/net/EventLoopThread.h"
// 引入自定义日志工具，用于输出调试和运行时日志
#include "../mqcommon/mq_logger.hpp"
// 引入自定义工具类，可能包含UUID生成、类型转换等辅助功能
#include "../mqcommon/mq_helper.hpp"
// 引入自定义线程池，用于管理多个工作线程执行异步任务
#include "../mqcommon/mq_threadpool.hpp"

namespace zdfmq
{
    /**
     * @brief 异步工作器类，封装了事件循环线程和线程池，提供异步任务处理能力
     * 设计目的：统一管理异步操作所需的线程资源，结合事件循环（处理IO事件）和线程池（处理计算任务）
     * 典型应用：在消息队列客户端中，处理网络事件回调和业务逻辑计算的分离
     */
    class AsyncWorker
    {
    public:
        // 定义AsyncWorker的智能指针类型，方便在多线程环境中管理对象生命周期
        using ptr = std::shared_ptr<AsyncWorker>;

        /**
         * @brief 事件循环线程，内部包含一个独立的EventLoop和对应的线程
         * 功能：
         * - 负责处理IO事件、定时器事件等需要异步响应的操作
         * - 提供EventLoop* getLoop()方法获取事件循环指针，用于注册回调函数
         * 特性：线程安全，其内部的EventLoop仅在所属线程中运行
         */
        muduo::net::EventLoopThread loopthread;

        /**
         * @brief 线程池，用于并行执行多个耗时的业务任务
         * 功能：
         * - 维护一组工作线程，接收任务并分配给线程执行
         * - 通常用于处理消息解析、业务逻辑计算等CPU密集型操作
         * 与loopthread的分工：loopthread处理IO密集型事件，pool处理CPU密集型任务
         */
        threadpool pool;
    };
}

#endif